//package com.woniuxy.lab.woniu_lab_boss.util;
//
//import com.baomidou.mybatisplus.core.toolkit.StringPool;
//import com.baomidou.mybatisplus.generator.AutoGenerator;
//import com.baomidou.mybatisplus.generator.InjectionConfig;
//import com.baomidou.mybatisplus.generator.config.*;
//import com.baomidou.mybatisplus.generator.config.po.TableInfo;
//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
//import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
//
//import java.util.ArrayList;
//import java.util.List;
//
//// 代码生成器
//public class GeneratorUtil {
//
//    public static void main(String[] args) {
//
//        // 使用前需要修改的参数 此外可能还需要在后方修改指定包含或排除的表
//        String mysqlUrl = "jdbc:mysql://192.168.120.10:3306/woniu_lab?charsetEncoding=utf-8&useSSL=false";// 数据库链接
//        String mysqlDriverName = "com.mysql.cj.jdbc.Driver";// 数据库驱动名 通常不用改
//        String mysqlUsername = "root";// 数据库账号
//        String mysqlPassword = "root123";// 数据库密码
//        String parentPath = "com.woniuxy.lab.woniu_lab_boss";// 父包路径 即启动类Application所在的目录
//        String tablePrefix = "lab_";// 表前缀
//        String author = "Silas";// 作者
//
//        // 1.创建代码生成器对象
//        AutoGenerator generator = new AutoGenerator();
//
//        // 2.全局配置
//        GlobalConfig globalConfig = new GlobalConfig();
//        String projectPath = System.getProperty("user.dir");// 项目所在路径 固定写法
//        globalConfig.setOutputDir(projectPath + "/src/main/java");// 代码生成路径
//        globalConfig.setAuthor(author);// 设置作者
//        globalConfig.setServiceName("%sService");// 设置Service类名前缀
//        globalConfig.setMapperName("%sDao");// 设置Dao类名前缀
//        globalConfig.setOpen(false);// 是否打开生成目录
//        generator.setGlobalConfig(globalConfig);// 将全局配置对象加入到代码生成器对象
//
//        // 3.数据源配置
//        DataSourceConfig dataSourceConfig = new DataSourceConfig();
//        dataSourceConfig.setUrl(mysqlUrl);
//        dataSourceConfig.setDriverName(mysqlDriverName);
//        dataSourceConfig.setUsername(mysqlUsername);
//        dataSourceConfig.setPassword(mysqlPassword);
//        generator.setDataSource(dataSourceConfig);// 将数据源配置对象加入到代码生成器对象
//
//        // 4.包配置
//        PackageConfig packageConfig = new PackageConfig();
//        packageConfig.setParent(parentPath);// 设置父包路径
//        packageConfig.setEntity("model");// 设置实体类位置
//        packageConfig.setMapper("dao");// 设置dao类位置
//        packageConfig.setService("service");// 设置service类位置
//        packageConfig.setServiceImpl("service.impl");// 设置serviceImpl类位置
//        packageConfig.setController("controller");// 设置controller类位置
//        generator.setPackageInfo(packageConfig);// 将包配置对象加入到代码生成器对象
//
//        // 5.自定义输出文件配置（此处为自定义输出Dao.xml文件）
//        String templatePath = "/templates/mapper.xml.vm";// 模板引擎为velocity写此行（见pom.xml中的maven依赖）
//        FileOutConfig outConfig = new FileOutConfig(templatePath) {// 自定义输出文件的配置
//            @Override
//            public String outputFile(TableInfo tableInfo) {
//                // 自定义输出xml文件名 如果Entity实体类设置了前后缀 此处注xml的名称会跟着发生变化
//                String path = projectPath + "/src/main/resources/mapper/";// xml文件所在路径
//                String fileName = tableInfo.getEntityName() + "Dao";// xml文件名
//                String xmlFile = StringPool.DOT_XML;// xml文件后缀
//                return path + fileName + xmlFile;// 返回文件完整路径名
//            }
//        };
//        List<FileOutConfig> focList = new ArrayList<>();// 自定义输出文件配置列表
//        focList.add(outConfig);
//
//        // 6.自定义配置
//        InjectionConfig injectionConfig = new InjectionConfig() {
//            @Override// to do nothing
//            public void initMap() {}
//        };
//        injectionConfig.setFileOutConfigList(focList);// 向自定义配置中加入自定义输出文件配置列表
//        generator.setCfg(injectionConfig);// 将自定义配置对象加入到代码生成器对象
//
//        // 7.模板配置
//        TemplateConfig templateConfig = new TemplateConfig();
//        templateConfig.setXml(null);// 如果不写此行 生成器会默认生成/templates/mapper.xml文件
//        generator.setTemplate(templateConfig);// 将模板配置对象加入到代码生成器对象
//
//        // 8.代码生成策略配置
//        StrategyConfig strategy = new StrategyConfig();
//        strategy.setNaming(NamingStrategy.underline_to_camel);
//        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//        strategy.setEntityLombokModel(true);// 实体类加上lombok注解
//        strategy.setRestControllerStyle(true);
//        strategy.setTablePrefix(tablePrefix);// 表名去前缀
//        strategy.setInclude("lab_base");// 指定代码生成策略包含某张表
//        strategy.setInclude("lab_base_range");// 指定代码生成策略包含某张表
//        //strategy.setExclude("account");// 指定代码生成策略排除某张表
//        generator.setStrategy(strategy);// 将代码生成策略对象加入到代码生成器对象
//
//        // 9.设置模板引擎
//        VelocityTemplateEngine engine = new VelocityTemplateEngine();
//        generator.setTemplateEngine(engine);// 将模板引擎对象加入到代码生成器对象
//
//        // 10.执行代码生成器
//        generator.execute();
//    }
//
//}